package sample.test.greenPages;

import BESA.Agent.StructBESA;
import BESA.SystemLevel.AdmBESA;
import BESA.util.ReportBESA;
import sample.test.agentodo.AgentOdo;
import sample.test.agentodo.BehaviorOdo;
import sample.test.agentodo.GuardOdoModify;
import sample.test.agentodo.StateOdo;

public class Main_GreenPages_1 {

	private static final String IP_ADD = "10.5.2.175";
	private static final int RMI_PORT = 9876;
	private static final String MC_ADD = "230.0.0.1";
	private static final int MC_PORT = 2222;

	public static void main(String[] args) {
		try {
			AdmBESA admLocal = AdmBESA.createInstance("Asma_1", 1.0, IP_ADD,
					RMI_PORT, MC_ADD, MC_PORT, false);
			StateOdo stateAgOdo = new StateOdo(3);
			double passwdAgOdo = 1.0;
			StructBESA structOdo = new StructBESA();
			structOdo.addBehavior(BehaviorOdo.class.getName());
			structOdo.bindGuard(GuardOdoModify.class.getName(),
					BehaviorOdo.class.getName());
			// structOdo.bindGuard("GuardOdoRequest","BehaviorOdo");
			// Crear el agente alias.estado,estructura,passwd
			@SuppressWarnings("unused")
			AgentOdo agOdo = new AgentOdo("Odometro_4", stateAgOdo, structOdo,
					new Double(passwdAgOdo));
                        AgentOdo agOdo2 = new AgentOdo("Odometro_5", stateAgOdo, structOdo,
					new Double(passwdAgOdo));

                        //GREEN PAGES

                        admLocal.getGreenPagesHelper().registerSociety("SOCIEDAD_1");
                        admLocal.getGreenPagesHelper().registerSociety("SOCIEDAD_3");
                        admLocal.getGreenPagesHelper().registerGroup("GRUPO_1_1", "SOCIEDAD_1");
                        admLocal.getGreenPagesHelper().registerGroup("GRUPO_1_2", "SOCIEDAD_1");
                        testSleep(1500);
                        admLocal.getGreenPagesHelper().registerGroup("GRUPO_2_1", "SOCIEDAD_2");
                        admLocal.getGreenPagesHelper().registerAgentInGroup(agOdo.getAid(), "GRUPO_2_1");
                        admLocal.getGreenPagesHelper().registerAgentInGroup(agOdo.getAid(), "GRUPO_1_1");
                        admLocal.getGreenPagesHelper().registerAgentInGroup(agOdo2.getAid(), "GRUPO_1_1");
                        admLocal.getGreenPagesHelper().registerAgentInGroup(agOdo2.getAid(), "GRUPO_2_1");
                        testSleep(1500);
                        admLocal.getGreenPagesHelper().printGreenPages();

                        admLocal.getGreenPagesHelper().unregisterAgent(agOdo.getAid());
                        admLocal.getGreenPagesHelper().unregisterAgentFromGroup(agOdo2.getAid(),"GRUPO_1_1");
                        admLocal.getGreenPagesHelper().unregisterSociety("SOCIEDAD_1");

		} catch (Exception e) {
			e.printStackTrace();
			ReportBESA.error("[main] " + e.getMessage());
			System.out.println("Error");
		}
		
	}// fin main

	private static void testSleep(long m) {
		try {
			Thread.sleep(m);
		} catch (InterruptedException ie) {
			ReportBESA.error("[main]" + ie.getMessage());
		}
	}
}
